package it.uiip.crm.control;

import it.uiip.crm.model.Anagrafica;
import it.uiip.crm.model.Utente;
import it.uiip.crm.persistenza.DAOAnagrafica;
import it.uiip.crm.persistenza.DAOException;
import it.uiip.crm.persistenza.DAOUtente;
import it.uiip.crm.view.Messaggi;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ControlloAggiornaAnagrafica {

	public void start(Utente utente) throws NumberFormatException, DAOException, ParseException{
		String stringaInput = Messaggi.getInput("Scegli l'opzione: \n"  +
				"	   1  per Aggiornare il nome\n" +
				"	   2  per Aggiornare il cognome\n" +
				"	   3  per Aggiornare la data di nascita\n" +
				"	   4  per Aggiornare il sesso\n" +
				"	   5  per Aggiornare l'indirizzo\n" +
				"	   6  per Aggiornare il cellulare\n" +
				"	   7  per Aggiornare il telefono\n" +
				"      0  per ESCI\n");
		int risposta = Integer.parseInt(stringaInput);
		String cf = Messaggi.getInput("Inserisci il codice fiscale dell'anagrafica da aggiornare");
		Anagrafica ana = DAOAnagrafica.findByCodFiscale(cf);
		
		switch (risposta) {
			case 1: aggiornaNome(ana, utente); break;
			case 2: aggiornaCognome(ana, utente); break;
			case 3: aggiornaData(ana, utente); break;
			case 4: aggiornaSesso(ana, utente); break;
			case 5: aggiornaIndirizzo(ana, utente); break;
			case 6: aggiornaCellulare(ana, utente); break;
			case 7: aggiornaTelefono(ana, utente); break;
			default: break;
		}
	}

	private void aggiornaUtente(Utente utente) throws DAOException {
		DAOUtente.makeRefresh(utente);
	}
	
	private void aggiornaTelefono(Anagrafica ana, Utente utente) throws DAOException {
		String telefono = Messaggi.getInput("Inserisci il nuovo numero di telefono");
		ana.setTelefono(telefono);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaCellulare(Anagrafica ana, Utente utente) throws DAOException {
		String cellulare = Messaggi.getInput("Inserisci il nuovo numero di cellulare");
		ana.setCellulare(cellulare);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaIndirizzo(Anagrafica ana, Utente utente) throws DAOException {
		String indirizzo = Messaggi.getInput("Inserisci il nuovo indirizzo");
		ana.setIndirizzo(indirizzo);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaSesso(Anagrafica ana, Utente utente) throws DAOException {
		String sesso = Messaggi.getInput("Inserisci il nuovo sesso");
		ana.setSesso(sesso.charAt(0));
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaData(Anagrafica ana, Utente utente) throws ParseException, DAOException {
		Date data = new SimpleDateFormat("dd/MM/yyyy").parse(Messaggi.getInput("Inserisci la nuova data data (gg/mm/aaaa"));
		ana.setDatanascita(data);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaCognome(Anagrafica ana, Utente utente) throws DAOException {
		String cognome = Messaggi.getInput("Inserisci il nuovo cognome");
		ana.setCognome(cognome);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}

	private void aggiornaNome(Anagrafica ana, Utente utente) throws DAOException {
		String nome = Messaggi.getInput("Inserisci il nuovo nome");
		ana.setNome(nome);
		DAOAnagrafica.makePersistent(ana);
		this.aggiornaUtente(utente);
	}
	
}
